── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.2
✔ ggplot2 4.0.0 ✔ tibble 3.3.0
✔ lubridate 1.9.4 ✔ tidyr 1.3.1
✔ purrr 1.1.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
dataCleaning
── ESPN WNBA Teams Information from ESPN.com ─────────────────── wehoop 2.1.0 ──
ℹ Data updated: 2025-12-04 11:56:13 PST
# A tibble: 13 × 10
team_id team mascot display_name short_name abbreviation color
<int> <chr> <chr> <chr> <chr> <chr> <chr>
1 20 Atlanta Dream Atlanta Dream Dream ATL e318…
2 19 Chicago Sky Chicago Sky Sky CHI 5091…
3 18 Connecticut Sun Connecticut Sun Sun CON f050…
4 3 Dallas Wings Dallas Wings Wings DAL 002b…
5 129689 Golden State Valkyries Golden State Va… Valkyries GS b38f…
6 5 Indiana Fever Indiana Fever Fever IND 002d…
7 17 Las Vegas Aces Las Vegas Aces Aces LV a7a8…
8 6 Los Angeles Sparks Los Angeles Spa… Sparks LA 5525…
9 8 Minnesota Lynx Minnesota Lynx Lynx MIN 2660…
10 9 New York Liberty New York Liberty Liberty NY 86ce…
11 11 Phoenix Mercury Phoenix Mercury Mercury PHX 3c28…
12 14 Seattle Storm Seattle Storm Storm SEA 2c52…
13 16 Washington Mystics Washington Myst… Mystics WSH e03a…
# ℹ 3 more variables: alternate_color <chr>, logo <chr>, logo_dark <chr>
──────────────────────────────────────────────────────────────── wehoop 2.1.0 ──
# A tibble: 6 × 64
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 4014556844 4 615 Jumpball Kiah… 0 0
2 4014556847 7 110 Driving Layup… Kels… 0 0
3 4014556848 8 155 Defensive Reb… DeWa… 0 0
4 40145568410 10 122 Jump Shot Bank DeWa… 0 2
5 40145568411 11 86 Out of Bounds… Kels… 0 2
6 40145568412 12 142 Cutting Finge… Alys… 0 4
# ℹ 57 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>,
# away_team_abbrev <chr>, away_team_name_alt <chr>, home_team_id <int>, …
[1] "Jumpball"
[2] "Driving Layup Shot"
[3] "Defensive Rebound"
[4] "Jump Shot Bank"
[5] "Out of Bounds - Step Turnover"
[6] "Cutting Finger Roll Layup Shot"
[7] "Jump Shot"
[8] "Driving Floating Jump Shot"
[9] "Offensive Rebound"
[10] "Out of Bounds - Bad Pass Turnover"
[11] "Fade Away Jump Shot"
[12] "Shooting Foul"
[13] "Free Throw - 1 of 2"
[14] "Free Throw - 2 of 2"
[15] "Lost Ball Turnover"
[16] "Loose Ball Foul"
[17] "Substitution"
[18] "Pullup Jump Shot"
[19] "Full Timeout"
[20] "Turnaround Jump Shot"
[21] "Personal Foul"
[22] "Offensive Charge"
[23] "Offensive Foul Turnover"
[24] "Traveling"
[25] "Bad Pass\nTurnover"
[26] "Running Layup Shot"
[27] "Cutting Layup Shot"
[28] "Offensive Foul"
[29] "Driving Jump Shot Bank"
[30] "Pullup Bank Jump Shot"
[31] "Turnaround Fade Away Jump Shot"
[32] "End Period"
[33] "Floating Jump Shot"
[34] "Double Technical Foul"
[35] "Layup Shot"
[36] "Official Timeout"
[37] "Step Back Jump Shot"
[38] "Free Throw - 1 of 1"
[39] "Driving Finger Roll Layup"
[40] "Layup Shot Putback"
[41] "Personal Take Foul"
[42] "Reverse Layup Shot"
[43] "Shot Clock Turnover"
[44] "Running Pullup Jump Shot"
[45] "Delay of Game"
[46] "Flagrant Foul Type 1"
[47] "Free Throw - Flagrant 1 of 3"
[48] "Free Throw - Flagrant 2 of 3"
[49] "Free Throw - Flagrant 3 of 3"
[50] "Short Timeout"
[51] "End Game"
[52] "Running Jump Shot"
[53] "Out of Bounds - Lost Ball Turnover"
[54] "Driving Hook Shot"
[55] "Turnaround Bank Jump Shot"
[56] "Alley Oop Layup Shot"
[57] "Jump Ball"
[58] "Clear Path Foul"
[59] "Free Throw - Clear Path 1 of 2"
[60] "Free Throw - Clear Path 2 of 2"
[61] "Finger Roll Layup"
[62] "Turnaround Hook Shot"
[63] "Turnaround Fadeaway Bank Jump Shot"
[64] "Hook Shot"
[65] "Free Throw - Flagrant 1 of 1"
[66] "Hook Driving Bank"
[67] "Layup Driving Reverse"
[68] "Kicked Ball"
[69] "Tip Shot"
[70] "3-Second Turnover"
[71] "Running Finger Roll Layup"
[72] "Technical Foul"
[73] "Free Throw - Technical"
[74] "Layup Running Reverse"
[75] "Driving Floating Bank Jump Shot"
[76] "Jumpball Violation Turnover"
[77] "Kicked Ball Turnover"
[78] "Hook Shot Bank"
[79] "Free Throw - 1 of 3"
[80] "Free Throw - 2 of 3"
[81] "Free Throw - 3 of 3"
[82] "Double Dribble Turnover"
[83] "Away from Play Foul"
[84] "Not Available"
[85] "Back Court Turnover"
[86] "Defensive 3-Seconds Technical"
[87] "Fade Away Bank Jump Shot"
[88] "Inbound Turnover"
[89] "Hook Turnaround Bank"
[90] "Free Throw - Flagrant 1 of 2"
[91] "Free Throw - Flagrant 2 of 2"
[92] "No Turnover"
[93] "8-Second Turnover"
[94] "Disc Dribble Turnover"
[95] "Palming Turnover"
[96] "Running Alley Oop Layup Shot"
[97] "Lane Violation Turnover"
[98] "Lane"
[99] "Step Back Bank Jump Shot"
[100] "ejection"
[101] "5-Second Turnover"
[102] "Flopping Technical"
[103] "Excess Timeout Technical"
[104] "Excess Timeout Turnover"
[105] "Driving Dunk Shot"
[106] "Delay Technical"
[107] "No Shot (Default Shot)"
[108] "Double Lane"
[109] "Running Dunk Shot"
[110] "Double Personal Foul"
[111] "5-Second Back to the Basket Turnover"
[112] "Flagrant Foul Type 2"
[113] "Too Many Players Technical"
[114] "Alley Oop Dunk Shot"
[115] "Ref-Initiated Review (Stands)"
[116] "Ref-Initiated Review (Supported)"
[117] "Coach's Challenge (Supported)"
[118] "Transition Take Foul"
[119] "Coach's Challenge (Overturned)"
[120] "No Foul"
[121] "Ref-Initiated Review (Overturned)"
[122] "Coach's Challenge (Stands)"
[123] "Challenge"
[124] "Offensive Goaltending Turnover"
[125] "Dunk Shot"
[126] "Coach's Challenge (replaycenter)"
[127] "No Timeout"
[128] "Defensive Goaltending"
──────────────────────────────────────────────────────────────── wehoop 2.1.0 ──
# A tibble: 6 × 64
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 4013918607 7 141 Cutting Layup… Sylv… 0 0
2 4013918609 9 130 Floating Jump… Nati… 0 2
3 40139186010 10 132 Step Back Jum… Kayl… 2 2
4 40139186011 11 92 Jump Shot Cour… 2 2
5 40139186013 13 92 Jump Shot Aeri… 5 2
6 40139186019 19 120 Turnaround Ho… Sylv… 5 4
# ℹ 57 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>,
# away_team_abbrev <chr>, away_team_name_alt <chr>, home_team_id <int>, …
──────────────────────────────────────────────────────────────── wehoop 2.1.0 ──
# A tibble: 7 × 64
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 401391820392 392 95 Layup Shot Teai… 65 48
2 401391751179 179 110 Driving Layu… Tiff… 22 38
3 401620360408 408 95 Layup Shot Aali… 71 63
4 40162027264 64 131 Pullup Jump … Alli… 7 10
5 401620270371 371 128 Driving Fing… Dear… 56 34
6 401620241422 422 132 Step Back Ju… Came… 53 56
7 401620232246 246 112 Reverse Layu… DiJo… 41 36
# ℹ 57 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>,
# away_team_abbrev <chr>, away_team_name_alt <chr>, home_team_id <int>, …
──────────────────────────────────────────────────────────────── wehoop 2.1.0 ──
# A tibble: 6 × 57
game_id season season_type game_date game_date_time athlete_id
<int> <int> <int> <date> <dttm> <int>
1 401391865 2022 2 2022-08-14 2022-08-14 19:00:00 2529622
2 401391865 2022 2 2022-08-14 2022-08-14 19:00:00 3913903
3 401391865 2022 2 2022-08-14 2022-08-14 19:00:00 3058901
4 401391865 2022 2 2022-08-14 2022-08-14 19:00:00 3904576
5 401391865 2022 2 2022-08-14 2022-08-14 19:00:00 4398935
6 401391865 2022 2 2022-08-14 2022-08-14 19:00:00 4398988
# ℹ 51 more variables: athlete_display_name <chr>, team_id <int>,
# team_name <chr>, team_location <chr>, team_short_display_name <chr>,
# minutes <dbl>, field_goals_made <int>, field_goals_attempted <int>,
# three_point_field_goals_made <int>,
# three_point_field_goals_attempted <int>, free_throws_made <int>,
# free_throws_attempted <int>, offensive_rebounds <int>,
# defensive_rebounds <int>, rebounds <int>, assists <int>, steals <int>, …
Joining with `by = join_by(athlete_display_name)`
Warning: Removed 2 rows containing non-finite outside the scale range
(`stat_density()`).
[1] 235
235 unique athletes took shots in these 3 seasons.
# A tibble: 3 × 8
season avg_points avg_playtime avg_ppm sd_points sd_playtime avg_fg_att
<int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2022 7.49 18.3 0.409 7.24 11.8 6.19
2 2023 7.44 18.1 0.411 7.80 12.5 6.15
3 2024 7.31 18.0 0.406 7.71 12.7 6.11
# ℹ 1 more variable: sd_fg_att <dbl>
# A tibble: 3 × 71
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 401391782510 510 92 Jump Shot Han … 112 100
2 401507237470 470 110 Driving Layu… Tian… 75 79
3 401620228534 534 109 Running Layu… Dear… 82 86
# ℹ 64 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>,
# away_team_abbrev <chr>, away_team_name_alt <chr>, home_team_id <int>, …
# A tibble: 2 × 71
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 401620442522 522 109 Running Layu… Sabr… 86 79
2 401620221563 563 131 Pullup Jump … Jewe… 83 68
# ℹ 64 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>,
# away_team_abbrev <chr>, away_team_name_alt <chr>, home_team_id <int>, …
# A tibble: 3 × 71
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 401391782510 510 92 Jump Shot Han … 112 100
2 401507237470 470 110 Driving Layu… Tian… 75 79
3 401620228534 534 109 Running Layu… Dear… 82 86
# ℹ 64 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>,
# away_team_abbrev <chr>, away_team_name_alt <chr>, home_team_id <int>, …
# A tibble: 2 × 71
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 401620442522 522 109 Running Layu… Sabr… 86 79
2 401620221563 563 131 Pullup Jump … Jewe… 83 68
# ℹ 64 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>,
# away_team_abbrev <chr>, away_team_name_alt <chr>, home_team_id <int>, …
# A tibble: 2,471 × 71
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 401391860330 330 92 Jump Shot Nati… 52 67
2 401391860473 473 125 Layup Shot … Sylv… 78 84
3 401391860490 490 95 Layup Shot Lind… 80 86
4 401391861119 119 131 Pullup Jump… Mari… 18 21
5 401391861239 239 132 Step Back J… Maya… 44 46
6 401391861520 520 141 Cutting Lay… Moni… 79 77
7 401391862280 280 92 Jump Shot Elen… 44 59
8 401391862293 293 131 Pullup Jump… Elen… 50 63
9 401391862451 451 110 Driving Lay… Tiff… 65 82
10 40139186443 43 110 Driving Lay… Chel… 8 16
# ℹ 2,461 more rows
# ℹ 64 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>, …
`geom_smooth()` using formula = 'y ~ x'
# A tibble: 37 × 1
game_id
<int>
1 401391652
2 401391657
3 401391659
4 401391665
5 401391675
6 401391678
7 401391683
8 401391687
9 401391696
10 401391703
# ℹ 27 more rows
# A tibble: 41 × 1
game_id
<int>
1 401507131
2 401507137
3 401507145
4 401507153
5 401507157
6 401507162
7 401507170
8 401507175
9 401507182
10 401507191
# ℹ 31 more rows
# A tibble: 32 × 1
game_id
<int>
1 401620220
2 401620228
3 401620235
4 401620244
5 401620254
6 401620269
7 401620274
8 401620282
9 401620285
10 401620290
# ℹ 22 more rows
Team-wide data
Run Length Encoding
lengths: int [1:40] 1 2 5 1 1 1 3 1 1 1 ...
values : logi [1:40] FALSE TRUE FALSE TRUE FALSE TRUE ...
phat_after_Sstreak phat_Sstreak_vs_others phat_Sstreak_vs_Fstreak
1 0.4 -0.06153846 -0.1
Sstreak_frequency longest_run_success n_runs
1 0.07462687 5 40
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Warning: Removed 27 rows containing non-finite outside the scale range
(`stat_bin()`).
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Warning: Removed 27 rows containing non-finite outside the scale range
(`stat_bin()`).
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Warning: Removed 28 rows containing non-finite outside the scale range
(`stat_bin()`).
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
# A tibble: 2 × 9
game_id team_id season phat_after_Sstreak phat_Sstreak_vs_others
<int> <fct> <int> <dbl> <dbl>
1 401391743 18 2022 1 0.644
2 401620343 11 2024 1 0.552
# ℹ 4 more variables: phat_Sstreak_vs_Fstreak <dbl>, Sstreak_frequency <dbl>,
# longest_run_success <int>, n_runs <int>
# A tibble: 1 × 9
game_id team_id season phat_after_Sstreak phat_Sstreak_vs_others
<int> <fct> <int> <dbl> <dbl>
1 401620372 8 2024 0.889 0.432
# ℹ 4 more variables: phat_Sstreak_vs_Fstreak <dbl>, Sstreak_frequency <dbl>,
# longest_run_success <int>, n_runs <int>
# A tibble: 64 × 71
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 40162037210 10 92 Jump Shot Cour… 0 0
2 40162037214 14 92 Jump Shot Brid… 2 0
3 40162037222 22 109 Running Layu… Shak… 2 0
4 40162037226 26 92 Jump Shot Kayl… 2 2
5 40162037238 38 92 Jump Shot Brid… 2 4
6 40162037242 42 92 Jump Shot Cour… 2 4
7 40162037246 46 92 Jump Shot Kayl… 2 7
8 40162037256 56 131 Pullup Jump … Kayl… 2 8
9 40162037260 60 110 Driving Layu… Kayl… 4 8
10 40162037263 63 131 Pullup Jump … Naph… 6 8
# ℹ 54 more rows
# ℹ 64 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>, …
# A tibble: 60 × 71
id sequence_number type_id type_text text away_score home_score
<dbl> <chr> <int> <chr> <chr> <int> <int>
1 4013917437 7 92 Jump Shot Cour… 0 0
2 40139174311 11 110 Driving Layu… Jonq… 2 0
3 40139174317 17 92 Jump Shot Jonq… 2 2
4 40139174321 21 121 Fade Away Ju… Nati… 2 2
5 40139174327 27 92 Jump Shot Nati… 5 6
6 40139174331 31 92 Jump Shot Nati… 5 8
7 40139174339 39 133 Pullup Bank … DeWa… 7 8
8 40139174342 42 95 Layup Shot Alys… 9 8
9 40139174350 50 141 Cutting Layu… Eliz… 9 11
10 40139174353 53 110 Driving Layu… Nati… 9 11
# ℹ 50 more rows
# ℹ 64 more variables: period_number <int>, period_display_value <chr>,
# clock_display_value <chr>, scoring_play <lgl>, score_value <int>,
# team_id <int>, athlete_id_1 <int>, athlete_id_2 <int>, athlete_id_3 <int>,
# wallclock <chr>, shooting_play <lgl>, coordinate_x_raw <dbl>,
# coordinate_y_raw <dbl>, season <int>, season_type <int>,
# away_team_id <int>, away_team_name <chr>, away_team_mascot <chr>, …
`geom_smooth()` using formula = 'y ~ x'
`geom_smooth()` using formula = 'y ~ x'
Investigating the champions for each year: how do their distributions look compared to the league average?
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_bin()`).
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_bin()`).
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_bin()`).
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value `binwidth`.